% GAUTIER LE BIHAN - 2020
% Replication files for �Shocks vs Menu Costs: Patterns of Price Rigidity in an Estimated Multi-Sector Menu-Cost Model� �Review of Economics and Statistics
%
% Appendix figure J

clear all
close all
clear matrix
clc


addpath('..\..\..\Utilities')  

param0=[[0.0511402136853782,0.0328191504780733,-3.41768793025316,0.746790250936210]];
    p0=tanh(param0(1));
    mu_c=param0(2);
    sig_eps_a=exp(param0(3));
    p_a=tanh(param0(4));

    weight_j=0.57;    
   [f2, avfracup2,    med2,    interq2, kur2]=geNCalvoPlus_SMM(p0, mu_c, sig_eps_a, p_a, weight_j);
 
   m_model=[f2; avfracup2;    med2;    interq2; kur2]
   
   
   actual_moments=m_model';
   
%    save actual_moments actual_moments
%    
 %  load actual_moments
   
   
%    
%  z=ones(2,1);
%  
% actual_moments=[ 0.0837  0.6737  0.0438  0.0698  4.4616;
%                  0.1370 0.7096 0.0473 0.0728 5.2872];
 
actual_std=[ 0.0008  0.0042  0.0005  0.0010  0.1057];
 actual_var= actual_std.* actual_std*1000;
 
 load res_estimb
 param0=res_estimb
res_estim_all_short=zeros(10,11);
for jj=19:-1:1;
 %delete SMM.mat   
p0 = param0(jj,1) ;%param0(jj,1); 
mu_c0 =jj*1/200;%param0(jj,2)+param0(jj,2)/5 ;
sig_eps_a0=param0(jj,3);%param0(jj,3);
p_a0 =0.75;%param0(jj,4);



%0.0500    0.0554    0.0455    0.5816
%p0_init = p00;
mu_c_init = mu_c0;
p0_init = p0;
sig_eps_a_init = sig_eps_a0;
p_a_init = p_a0;


% Adjustement of initial search area (beyond 5 percent)

%power_p0 = 1.02;
power_mu_c = 1.0;
power_sig_eps_a = 1.0;
%power_p_a = 1.0;

% save SMM

% create vector for initial parameter values
vec0 = [p0; sig_eps_a0; p_a0]

% Keep track of results
conv_SMM = zeros(0,3);
xopt_SMM = 100000; % start iteration
conv_opt = zeros(3,6);
SMM_count = 0; % counter

% tolerance level
tol_SMM = 1e-3;


save('SMM','jj')

save('SMM','vec0','p_a0','p0','sig_eps_a0',...
    'p0_init','mu_c_init','sig_eps_a_init',...
    'power_mu_c','power_sig_eps_a',...
    'conv_SMM','xopt_SMM','conv_opt','SMM_count',...
    'tol_SMM','-append')
% 'power_phi','phi_init','phi0'

%% Options
%  Display, TolX, TolFun, MaxFunEvals

%% Set calibration target
% std.Y, autocorr(Y), frequency of default:
moment1 = actual_moments(1,1);
moment2 = actual_moments(1,2);
moment3 = actual_moments(1,3);
moment4 = actual_moments(1,4); 
moment5 = actual_moments(1,5);

weight_j=0.57;



%moment6 = actual_moments(jj,7);
%moment7 = actual_moments(jj,3);


target = [moment1; moment2; moment3; moment4; moment5];
save('SMM','target','-append')
%% Start minimization routine 
% options = optimset('MaxIter',20);%, 'TolX', 1e-4,'Tolfun', 1e-3);

scale=[actual_var(1,:)'];
save('SMM','target','scale','-append')
%% Start minimization routine 
 %options = optimset('MaxIter',20);%, 'TolX', 1e-4,'Tolfun', 1e-3);
 %options = optimset('TolX', 1e-4,'Tolfun', 1e-3);
options = optimset('MaxFunEvals',50);

[x,fval, exiflag] = fminsearch(@SMMmain,vec0, options);
res_estimd(jj,:)=[x' jj*1/200 fval exiflag target' ]

    save res_estimd res_estimd;
end


